#ifndef GAMESTATE_H
#define GAMESTATE_H

#include <string>
using namespace std;

struct GameState {

// properties
public:
     bool turn;
     int lastEnPassant; // empty square where the last double-pushed pawn can be captured
	 bool whiteCanCastleKingSide;
     bool whiteCanCastleQueenSide;
     bool blackCanCastleQueenSide;
     bool blackCanCastleKingSide;
     int halfMoveClock; //pliesSinceLastCaptureOrPawnMove
     int fullMoveNumber; // incremented after each black ply

     // for 3-times repetition rule
     string pseudoFen;

// functions
public:
	bool IsEqual(GameState gs);
        
}

#endif